package com.qkjia.client;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.util.Scanner;
/**
 * 客户端
 */
public class ChatClient {

    // 启动客户端方法
    public void startClient(String name) throws IOException {
        // 连接服务端
        SocketChannel socketChannel =
                SocketChannel.open(new InetSocketAddress("127.0.0.1",8000));

        // 接收服务端响应数据
        Selector selector = Selector.open();
        socketChannel.configureBlocking(false);
        // 注册通道 SelectionKey.OP_READ 读取操作的操作设置位。
        socketChannel.register(selector, SelectionKey.OP_READ);
        // 创建线程
        new Thread(new ClientThread(selector)).start();

        // 向服务器端发送消息
        Scanner scanner = new Scanner(System.in);
        // 如果此扫描器的输入中有另一行，则返回 true。 此方法可能会在等待输入时阻塞。 扫描仪不会通过任何输入。
        while(scanner.hasNextLine()) {
            String msg = scanner.nextLine();
            if(msg.length()>0) {
                socketChannel.write(Charset.forName("UTF-8").encode(name +" : " +msg));
            }
        }
    }

    public static void main(String[] args) {
        ChatClient chatClient = new ChatClient();
        try {
            chatClient.startClient("去年末");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
